package CollUtil;

import cn.hutool.core.collection.CollUtil;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

import static cn.hutool.core.collection.CollUtil.emptyIfNull;

public class CollUtilDemo {
    public static void main(String[] args) {
        // 创建一个空的列表
        List<String> list1 = new ArrayList<>();
        List<String> list2 = new ArrayList<>(Arrays.asList("元素2", "元素2", "元素3", "元素4", "元素5"));

        // 1. 添加多个元素到集合中
        CollUtil.addAll(list1, Arrays.asList("元素1", "元素2")); // 使用 Arrays.asList
        System.out.println("添加元素后列表1: " + list1); // 输出: [元素1, 元素2]

        // 2. 检查集合是否为空
        boolean isEmpty = CollUtil.isEmpty(list1);
        System.out.println("列表1是否为空: " + isEmpty); // 输出: false

        // 3. 将集合元素连接成字符串
        String result = CollUtil.join(list1, ", ");
        System.out.println("连接后的字符串: " + result); // 输出: 元素1, 元素2

        // 4. 合并集合，得到并集
        Collection<String> union = CollUtil.union(list1, list2);
        System.out.println("并集: " + union); // 输出: [元素1, 元素2, 元素2, 元素3, 元素4, 元素5]

        // 5. 获取多个集合的并集（去重）
        Collection<String> unionDistinct = CollUtil.unionDistinct(list1, list2);
        System.out.println("并集（去重）: " + unionDistinct); // 输出: [元素1, 元素2, 元素3, 元素4, 元素5]

        // 6. 不去重的并集
        List<String> unionAll = CollUtil.unionAll(list1, list2);
        System.out.println("不去重的并集: " + unionAll); // 输出: [元素1, 元素2, 元素2, 元素2, 元素3, 元素4, 元素5]

        // 7. 计算交集
        Collection<String> intersection = CollUtil.intersection(list1, list2);
        System.out.println("交集: " + intersection); // 输出: [元素2]

        // 8. 计算多个集合的交集
        List<String> list3 = new ArrayList<>(Arrays.asList("元素1", "元素3"));
        Collection<String> intersectionMultiple = CollUtil.intersection(list1, list2, list3);
        System.out.println("多个集合的交集: " + intersectionMultiple); // 输出: []

        // 9. 计算集合的差集
        Collection<String> difference = CollUtil.subtract(list1, list2);
        System.out.println("差集: " + difference); // 输出: [元素1]

        // 10. 计算两个集合的对称差（不在两个集合中的元素）
        Collection<String> disjunction = CollUtil.disjunction(list1, list2);
        System.out.println("对称差集: " + disjunction); // 输出: [元素1, 元素2, 元素3, 元素4, 元素5]

        // 11. 使用 emptyIfNull 方法检查集合是否为空
        List<String> nullList = null;
        List<String> safeList = emptyIfNull(nullList);
        System.out.println("空列表处理: " + safeList); // 输出: []
    }
}

